import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './permission'

import ElementUI from 'element-ui';
//import '@/dark.css'
import 'element-ui/lib/theme-chalk/index.css';
import './style/contentShadow.css';
import {initDynamicRoutes} from "@/utils/dynamicRouteManager";
import {getAccessToken, removeToken} from "@/utils/auth";

Vue.use(ElementUI);

Vue.config.productionTip = false

// 初始化动态路由，注意这里的router已经是包含了静态路由的完整路由器对象
initDynamicRoutes(router).then(() => {
    new Vue({
        router,
        store,
        render: h => h(App)
    }).$mount('#app')
}).catch(() => {
    if (getAccessToken()) { // token过期
        removeToken()
    }
    window.location.href = '/login';
})

/*
在提供的代码片段中，initDynamicRoutes(router).then(...).catch(...) 使用了 Promise 的链式调用。initDynamicRoutes 函数很可能是一个返回 Promise 的函数，用于动态初始化或加载路由。
then 方法会在 Promise 成功解决（即 initDynamicRoutes 函数完成其异步操作并无错误返回）时被调用，而 catch 方法会在 Promise 被拒绝（即 initDynamicRoutes 函数在执行过程中遇到错误或抛出了异常）时被调用。
因此，catch 里的内容会在以下情况下执行：
    initDynamicRoutes 函数内部抛出了一个错误，而这个错误没有被函数内部的任何 try...catch 语句捕获。
    initDynamicRoutes 函数显式地拒绝了返回的 Promise，例如通过 Promise.reject(error)。
在这些情况下，.catch(error => { /!* 处理错误的代码 *!/ }) 中的回调函数会被调用，你可以在这里处理或记录错误。
如果 initDynamicRoutes 函数成功完成并且没有抛出任何错误，那么 then 方法中的回调函数会执行，并且 catch 方法中的回调函数则不会被调用。
简而言之，catch 里的内容会在 initDynamicRoutes 函数失败（即 Promise 被拒绝）时执行。
*/

/*
new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app')
*/
